package cn.tedu._03vehicle.controller;

import cn.tedu._03vehicle.base.response.JsonResult;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;


import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.UUID;

/**
 * 文件上传
 */
@RestController
@RequestMapping("/v1/file/")
public class UploadController {
    /**
     * 文件上传功能
     * @param file  客户端传递给服务端的文件对象[MultipartFile 接收]
     * @return
     */
    @PostMapping("upload")
    public JsonResult upload(MultipartFile file) throws Exception {
        //最终目标:d:/files/2025/02/07/xxx.jpg
        /*
            1.存储文件到服务器：d:/files/...
                1.1  获取并处理文件名；
                1.2  处理并创建存储路径  /2025/02/07/
                1.3  保存文件；
            2.返回响应给客户端：{"state":2000,"message":"操作成功"，"data":"文件路径"}
         */

        //1.获取并处理文件名
        //获取原始文件名
        String filename = file.getOriginalFilename();
        //获取原始文件名的后缀
        String suffix = filename.substring(filename.lastIndexOf("."));
        //生成全球唯一的文件名
        filename= UUID.randomUUID()+suffix;

        //2.处理路径，目标d:/files/2025/02/07/
        String dirPath = "d:/files";
        SimpleDateFormat sdf = new SimpleDateFormat("/yyyy/MM/dd/");
        String dataPath = sdf.format(new Date());

        //3.创建路径
        File dirFile = new File(dirPath + dataPath);
        if(!dirFile.exists()){
            dirFile.mkdirs();
        }


        //4.保存图片
        //filePath-->d:/files/2025/02/07/172b3ace-96fb-4f37-80d5-9702ca6ea64b.jpg
        //data:/2025/02/07/172b3ace-96fb-4f37-80d5-9702ca6ea64b.jpg
        //前端：http://localhost:8080/2025/02/07/172b3ace-96fb-4f37-80d5-9702ca6ea64b.jpg
        String filePath = dirPath + dataPath + filename;
        file.transferTo(new File(filePath));



        return JsonResult.success(dataPath+filename);

    }
}
